package com.hjwoo.app.baseviews;

import android.annotation.TargetApi;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Window;
import android.view.WindowManager;

import com.hjwoo.app.R;
import com.hjwoo.app.common.AppManager;
import com.readystatesoftware.systembartint.SystemBarTintManager;
import com.umeng.analytics.MobclickAgent;
import com.umeng.message.PushAgent;

/**
 * Created by liuderu on 2016/3/29.
 */
public class BaseAppCompatActivity extends FragmentActivity
{
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    protected void setTranslucentStatus()
    {
        Window window = getWindow();
        // Translucent status bar
        window.setFlags(
            WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
            WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

//        window.setStatusBarColor(Color.TRANSPARENT);
        // Translucent navigation bar
//        window.setFlags(
//                WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION,
//                WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // 添加Activity到堆栈
        AppManager.getAppManager().addActivity(this);

        /* 友盟    注意: 此方法请务必调用！
        如果不调用此方法，不仅会导致按照"几天不活跃"条件来推送失效，
        还将导致广播发送不成功以及设备描述红色等问题发生。
        可以只在应用的主Activity中调用此方法，
        但是由于SDK的日志发送策略，
        有可能由于主activity的日志没有发送成功，而导致未统计到日活数据。
        */
        PushAgent.getInstance(this).onAppStart();

        // 修改状态栏颜色，4.4+生效
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
        {
            setTranslucentStatus();

        }
        SystemBarTintManager tintManager = new SystemBarTintManager(this);
        tintManager.setStatusBarTintEnabled(true);
        tintManager.setStatusBarTintResource(R.color.status_bar_bg);//通知栏所需颜色
    }

    @Override
    protected void onResume()
    {
        super.onResume();

//        确保在所有的Activity中都调用 MobclickAgent.onResume() 和MobclickAgent.onPause()方法，这两个调用将不会阻塞应用程序的主线程，也不会影响应用程序的性能。
//        注意 如果您的Activity之间有继承或者控制关系请不要同时在父和子Activity中重复添加onPause和onResume方法，否则会造成重复统计，导致启动次数异常增高。(eg.使用TabHost、
//        TabActivity、ActivityGroup时)。
//        当应用在后台运行超过30秒（默认）再回到前端，将被认为是两个独立的session(启动)，例如用户回到home，或进入其他程序，经过一段时间后再返回之前的应用。可通过接口：MobclickAgent.setSessionContinueMillis(long interval) 来自定义这个间隔（参数单位为毫秒）。
//        如果开发者调用Process.kill或者System.exit之类的方法杀死进程，请务必在此之前调用MobclickAgent.onKillProcess(Context context)方法，用来保存统计数据。
        //用于统计友盟次数
        MobclickAgent.onResume(this);
    }

    @Override
    protected void onPause()
    {
        //用于统计友盟次数
        MobclickAgent.onPause(this);
        super.onPause();
    }

    @Override
    protected void onDestroy()
    {
        super.onDestroy();
        AppManager.getAppManager().finishActivity(this);
    }
}
